package cn.yuanqiao.archive.detection.mapper;

import cn.yuanqiao.archive.appManager.domain.DataScopeBase;
import cn.yuanqiao.archive.detection.domain.Detection;
import cn.yuanqiao.archive.detection.domain.DetectionScheme;
import cn.yuanqiao.common.annotation.DataScope;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 四性检测方案Mapper接口
 * 
 * @author xy
 * @date 2023-08-07
 */
@Mapper
public interface DetectionSchemeMapper 
{
    /**
     * 查询四性检测方案
     * 
     * @param id 四性检测方案主键
     * @return 四性检测方案
     */
    public DetectionScheme selectDetectionSchemeById(@Param("id") Long id, @Param("tableName") String tableName);

    /**
     * 查询四性检测方案列表
     * 
     * @param detectionScheme 四性检测方案
     * @return 四性检测方案集合
     */
    public List<DetectionScheme> selectDetectionSchemeList(@Param("detectionScheme") DetectionScheme detectionScheme, @Param("code") String code);

    /**
     * 新增四性检测方案
     * 
     * @param detectionScheme 四性检测方案
     * @return 结果
     */
    public int insertDetectionScheme(DetectionScheme detectionScheme);

    /**
     * 修改四性检测方案
     * 
     * @param detectionScheme 四性检测方案
     * @return 结果
     */
    public int updateDetectionScheme(DetectionScheme detectionScheme);

    /**
     * 删除四性检测方案
     * 
     * @param id 四性检测方案主键
     * @return 结果
     */
    public int deleteDetectionSchemeById(Long id);

    /**
     * 批量删除四性检测方案
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteDetectionSchemeByIds(@Param("ids") Long[] ids, @Param("tableName")String tableName);

    int getCountByIdentification(@Param("identification") String identification, @Param("tableName") String tableName);

    int getNumByCategroryId(@Param("tableName") String tableName, @Param("categoryId") Long categoryId);

    List<Detection> selectDetectionList(@Param("code") String code);

    DetectionScheme selectDetectionSchemeByCode(@Param("code") String code, @Param("tableName") String tableName);

    List<Detection> objectTree(@Param("id") Long id, @Param("code") String code);

    @DataScope(deptAlias = "d", userAlias = "a",deptColumn = "DEPT_ID",userColumn = "CREATEID")
    List<DetectionScheme> selectDetectionSchemeListByRole(@Param("dataScopeBase") DataScopeBase dataScopeBase, @Param("detectionScheme") DetectionScheme detectionScheme, @Param("code") String code);
}
